The solution according to one or more embodiments of the present invention generally relates to the data-processing field. More specifically, this solution relates to the maintenance of virtual machines.
Virtual appliances are a specific type of software appliances. In general, a software appliance is a software solution comprising a software application (i.e., one or more application programs performing a specific user task) and a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the software application), which are encapsulated in a pre-built, self-contained package. In particular, a virtual appliance is a software appliance designed to run in a virtualized environment; for this purpose, the virtual appliance comprises one or more virtual machines (i.e., emulations by software of physical machines), each one with its operating system and application programs. Virtual appliances allow provisioning corresponding services on demand in a very fast way, by simply turning them online whenever it is necessary.
As usual, the software components (i.e., operating system and software applications) of each virtual appliance are subject to continual maintenance operations during their life cycle; particularly, patches (or fixes) are applied from time to time to upgrade the software components—for example, to correct bugs or to improve operation of the software components. For this purpose, most software components comprise an embedded updating tool, which is invoked periodically when the corresponding software component is launched. The updating tool verifies whether new patches are available on an associated central location (for example, a web site of a vendor of the software component); if so, the new patches are downloaded and applied to the software component automatically. Alternatively, “Patch Auditing in Infrastructure as a Service Clouds—Lionel Litty, David Lie—VEE'11 Mar. 9-11, 2011, Newport Beach, Calif., USA” (the entire disclosure of which is herein incorporated by reference) proposes monitoring virtual hardware to determine execution of (possibly un-patched) executable or interpreted programs.
Therefore, the software components of the virtual appliances can be upgraded only when they are online. However, the virtual appliances may be left offline for long periods of time; for example, this happens when the virtual appliances are used only sporadically, or when they are always offline because they are only used as master images (for their cloning and deployment) or as template images (for the creation of custom virtual appliances based thereon). As a result, the patches are not applied to the software components of these (quiescent) virtual appliances in a timely manner. This may cause serious issues when the missing patches are relatively important; for example, out-of-date software components may not operate properly, or they may be exposed to security vulnerabilities.
The current approach to address the above-mentioned problem is of turning online the virtual appliances periodically; a scanner (for example, an anti-virus) is upgraded and run on the corresponding virtual machines so as to discover any missing patches and apply them. However, this is very time consuming (especially in large systems that may store a high number of quiescent virtual appliances); moreover, it causes a considerable waste of system resources (for example, processing, memory and network resources) for the scanning of all the quiescent virtual appliances.
Alternatively, a service may investigate a pool of virtual machines to perform a risk analysis thereof, so as to provide some offline patching capabilities; however, this technique is implemented within a custom virtual machine architecture, so that it is not of general applicability.
For the same purpose, US-A-2009/0007105 (the entire disclosure of which is herein incorporated by reference) proposes rendering the image of each virtual machine to file-system data that is readable by another system (for example, by mounting its virtual hard drive image as a physical disk device); the rendered virtual machine may then be scanned to determine its status with respect to possible patches to be applied thereto.
In any case, the above-described techniques are not completely satisfactory. Indeed, the inspection of the offline virtual machines may sometime be ineffective in retrieving the required information, since most of the Application Program Interfaces (APIs) of the operating systems of the virtual machines are not available when they are offline.